Skip to main content

04. 组合逻辑电路分析与设计

1. 组合逻辑电路基础 (Fundamentals of Combinational Logic Circuits)

组合逻辑电路的核心特征是其任意时刻的输出仅由该时刻的输入决定,不依赖于电路过去的状态。

  • 关键特性: 无记忆性 (Memoryless),其逻辑功能可以表示为 Output=f(Input)Output = f(Input)

  • 与时序逻辑电路的对比:

    特性组合逻辑电路 (Combinational Logic)时序逻辑电路 (Sequential Logic)
    输出决定因素当前输入当前输入 + 电路内部状态 (记忆)
    核心元件逻辑门 (AND, OR, NOT 等)逻辑门 + 存储元件 (触发器、锁存器)
    行为描述真值表、布尔函数状态图、状态表
    应用举例加法器、比较器、编解码器计数器、寄存器、有限状态机

2. 组合逻辑电路分析 (Analysis of Combinational Logic Circuits)

分析的目的是根据给定的逻辑图,确定其功能,通常以真值表布尔函数的形式表达。

2.1. 方法一:真值表分析法 (Analysis with Truth Table)

通过逐一列举所有输入组合,推导出对应输出,最终形成真值表。

  • 步骤:

    1. 确定有 nn 个输入,列出所有 2n2^n 种输入组合。
    2. 为电路中的中间节点(每个逻辑门的输出)命名。
    3. 从最靠近输入端的门开始,逐级计算并列出每个中间节点的真值表。
    4. 最后,根据中间节点的值,计算最终输出的真值表。
    5. (可选)根据真值表,使用卡诺图等方法化简,得到最简布尔表达式,并解释电路功能。
  • 用例:分析一个全加器 (Full Adder) 电路 下图是一个典型的全加器电路,输入为 A,B,CA, B, CCC 为低位进位),输出为 F1F_1 (和) 和 F2F_2 (向高位的进位)。

    • 分析过程: 以输入 A=0, B=1, C=1 为例:

      1. 计算中间节点:
        • AB=01=1A \oplus B = 0 \oplus 1 = 1
        • AB=01=0A \cdot B = 0 \cdot 1 = 0
        • (AB)C=11=1(A \oplus B) \cdot C = 1 \cdot 1 = 1
      2. 计算最终输出:
        • F1=(AB)C=11=0F_1 = (A \oplus B) \oplus C = 1 \oplus 1 = 0
        • F2=(AB)+((AB)C)=0+1=1F_2 = (A \cdot B) + ((A \oplus B) \cdot C) = 0 + 1 = 1
    • 最终真值表:

      ABCF1F_1 (Sum)F2F_2 (Carry)
      00000
      00110
      01010
      01101
      10010
      10101
      11001
      11111
    • 结论: 通过化简可得布尔函数,这正是一位全加器的标准逻辑: F1=ABCF_1 = A \oplus B \oplus C F2=AB+AC+BCF_2 = AB + AC + BC

2.2. 方法二:布尔函数推导法 (Analysis with Boolean Function Derivation)

直接从电路图推导出输出关于输入的布尔函数表达式。

  • 步骤:

    1. 为电路中的中间节点命名。
    2. 从最靠近输入端的门开始,写出各中间节点的布尔表达式。
    3. 将中间节点的表达式逐级代入,直到最终输出只包含输入变量。
    4. 化简最终的布尔表达式。
  • 用例:再次分析上述全加器电路

    1. 定义中间变量:T1=A+B+CT_1 = A+B+C, T2=ABCT_2 = ABC, T3=F2(A+B+C)T_3 = F_2'(A+B+C)
    2. 写出各级表达式:
      • F2=AB+AC+BCF_2 = AB + AC + BC
      • F1=T3+T2=F2T1+T2F_1 = T_3 + T_2 = F_2' \cdot T_1 + T_2
    3. 代入并化简 F1F_1 F1=(AB+AC+BC)(A+B+C)+ABC=(AB+AC+BC)(A+B+C)+ABC(DeMorgan’s Law, not shown in slides but useful)=ABC+ABC+ABC+ABC(After expansion and simplification)=ABC\begin{align*} F_1 &= (AB + AC + BC)'(A+B+C) + ABC \\ &= (\overline{A}\overline{B} + \overline{A}\overline{C} + \overline{B}\overline{C})(A+B+C) + ABC \quad \text{(DeMorgan's Law, not shown in slides but useful)} \\ &= A'B'C + A'BC' + AB'C' + ABC \quad \text{(After expansion and simplification)} \\ &= A \oplus B \oplus C \end{align*}
    4. 结论: 得到的表达式与真值表法一致,确认了电路是全加器 (Full Adder)

3. 组合逻辑电路设计 (Design of Combinational Logic Circuits)

设计是分析的逆过程:根据需求(功能描述),创建出对应的逻辑电路。

3.1. 四步设计法 (Four-Step Design Procedure)

这是一个规范化的设计流程,是设计题目的核心方法。

  1. 规格 (Specification):
    • 明确问题需求,确定电路有多少个输入和多少个输出。
    • 为输入和输出变量赋予符号。
  2. 形式化 (Formulation):
    • 根据输入和输出之间的逻辑关系,推导出真值表布尔函数
    • 如果输入组合存在无效或不关心的情况,标记为无关项 (Don't-Care Conditions)
  3. 优化 (Optimization):
    • 对每个输出函数,使用卡诺图 (K-map) 或布尔代数进行化简,得到最简的积之和 (SOP)和之积 (POS) 表达式。
    • 利用无关项可以获得更简单的表达式。
  4. 逻辑图 (Logic Diagram):
    • 根据优化后的布尔表达式,绘制出逻辑电路图。
    • 可以考虑对表达式进行变换,以复用 (reuse) 某些逻辑门,减少硬件成本。

3.2. 设计用例:BCD 码到余 3 码转换器 (BCD-to-Excess-3 Code Converter)

  • Step 1: 规格

    • 输入: 4 位 BCD 码 A,B,C,DA, B, C, D (代表十进制 0-9)。
    • 输出: 4 位余 3 码 w,x,y,zw, x, y, z
    • BCD 码的输入 1010101011111111 是无效的,作为无关项处理。
  • Step 2: 形式化

    • 逻辑关系: Output=Input+3Output = Input + 3。例如,输入 00010001 (1),输出 01000100 (4)。

    • 真值表 (其中 x 代表无关项):

      十进制ABCDwxyz
      000000011
      100010100
      200100101
      300110110
      401000111
      501011000
      601101001
      701111010
      810001011
      910011100
      10-151010xxxx
      ...............xxxx
  • Step 3: 优化

    • 使用卡诺图(利用无关项 x)对 w,x,y,zw, x, y, z 分别化简,得到: w=A+BC+BDw = A + BC + BD x=BC+BD+BCDx = B'C + B'D + BC'D' y=CD+CD=CDy = CD + C'D' = C \oplus D' z=Dz = D'
    • 进一步优化 (门复用): 观察表达式,发现公共项 C+Dw=A+B(C+D)w = A + B(C+D) x=B(C+D)+BCDx = B'(C+D) + BC'D' y=CD+(C+D)y = CD + (C+D)'
  • Step 4: 逻辑图

    • 根据优化后的表达式绘制电路图,其中 C+DD' 等可以被多个输出共享,从而节省逻辑门。

4. 常用组合逻辑电路实例 (Common Combinational Logic Circuit Examples)

4.1. 等值比较器 (Equality Comparator)

  • 功能: 比较两个 nn 位二进制数 AABB 是否相等。
  • 设计思想: 当真值表过于庞大时(例如 4 位比较器有 28=2562^8=256 行),采用算法/模块化思想。
    • 两个数 AABB 相等,当且仅当它们的每一位都对应相等。
    • (A=B)    (A3=B3) AND (A2=B2) AND (A1=B1) AND (A0=B0)(A=B) \iff (A_3=B_3) \text{ AND } (A_2=B_2) \text{ AND } (A_1=B_1) \text{ AND } (A_0=B_0)
  • 实现:
    • 重点: 每一位的比较 (Ai=Bi)(A_i = B_i) 可以通过 同或门 (XNOR) 实现。当 AiA_iBiB_i 相同时,XNOR 输出为 1。 xi=(AiBi)=AiBi+AiBix_i = (A_i \oplus B_i)' = A_i B_i + A_i' B_i'
    • 最终的相等输出 EE 是所有位比较结果的与 (AND)E=x3x2x1x0E = x_3 \cdot x_2 \cdot x_1 \cdot x_0

4.2. 数值比较器 (Magnitude Comparator)

  • 功能: 比较两个 nn 位二进制数 AABB 的大小关系,产生三个输出:A>BA>B, A=BA=B, A<BA<B
  • 重点和难点: 核心在于理解比较大小的串行/级联逻辑
  • 设计思想:
    1. 相等 (A=B): 与等值比较器相同。 (A=B)=x3x2x1x0(其中 xi=Ai XNOR Bi)(A=B) = x_3 x_2 x_1 x_0 \quad (\text{其中 } x_i = A_i \text{ XNOR } B_i)
    2. 大于 (A>B): 从最高位 (Most Significant Bit, MSB) 开始比较。A>BA>B 成立的条件是:
      • 最高位 A3>B3A_3 > B_3 (即 A3=1,B3=0A_3=1, B_3=0, 表达式为 A3B3A_3 B_3')。
      • 或者,最高位相等 (x3=1x_3=1),并且次高位 A2>B2A_2 > B_2 (即 A2B2A_2 B_2')。
      • 或者,高两位都相等 (x3x2=1x_3 x_2=1),并且 A1>B1A_1 > B_1 (即 A1B1A_1 B_1')。
      • 或者,高三位都相等 (x3x2x1=1x_3 x_2 x_1=1),并且最低位 A0>B0A_0 > B_0 (即 A0B0A_0 B_0')。
      • 将以上所有条件或 (OR) 起来,得到最终表达式: (A>B)=A3B3+x3A2B2+x3x2A1B1+x3x2x1A0B0(A>B) = A_3 B_3' + x_3 A_2 B_2' + x_3 x_2 A_1 B_1' + x_3 x_2 x_1 A_0 B_0'
    3. 小于 (A<B): 逻辑与 A>BA>B 对称,只需将 AABB 的角色互换。 (A<B)=A3B3+x3A2B2+x3x2A1B1+x3x2x1A0B0(A<B) = A_3' B_3 + x_3 A_2' B_2 + x_3 x_2 A_1' B_1 + x_3 x_2 x_1 A_0' B_0